package com.ruoyi.service;

import java.util.List;
import com.ruoyi.domain.CarGroupPurchase;

/**
 * 优惠团购Service接口
 * 
 * @author ruoyi
 * @date 2025-01-27
 */
public interface ICarGroupPurchaseService 
{
    /**
     * 查询优惠团购
     * 
     * @param id 优惠团购主键
     * @return 优惠团购
     */
    public CarGroupPurchase selectCarGroupPurchaseById(Integer id);

    /**
     * 查询优惠团购列表
     * 
     * @param carGroupPurchase 优惠团购
     * @return 优惠团购集合
     */
    public List<CarGroupPurchase> selectCarGroupPurchaseList(CarGroupPurchase carGroupPurchase);

    /**
     * 查询有效的团购活动
     * 
     * @return 团购活动列表
     */
    public List<CarGroupPurchase> selectActiveGroupPurchases();

    /**
     * 根据状态查询团购活动
     * 
     * @param status 状态
     * @return 团购活动列表
     */
    public List<CarGroupPurchase> selectGroupPurchasesByStatus(Integer status);

    /**
     * 新增优惠团购
     * 
     * @param carGroupPurchase 优惠团购
     * @return 结果
     */
    public int insertCarGroupPurchase(CarGroupPurchase carGroupPurchase);

    /**
     * 修改优惠团购
     * 
     * @param carGroupPurchase 优惠团购
     * @return 结果
     */
    public int updateCarGroupPurchase(CarGroupPurchase carGroupPurchase);

    /**
     * 批量删除优惠团购
     * 
     * @param ids 需要删除的优惠团购主键集合
     * @return 结果
     */
    public int deleteCarGroupPurchaseByIds(Integer[] ids);

    /**
     * 删除优惠团购信息
     * 
     * @param id 优惠团购主键
     * @return 结果
     */
    public int deleteCarGroupPurchaseById(Integer id);

    /**
     * 参与团购
     * 
     * @param groupPurchaseId 团购ID
     * @param userId 用户ID
     * @return 结果
     */
    public int joinGroupPurchase(Integer groupPurchaseId, Integer userId);

    /**
     * 检查团购是否可参与
     * 
     * @param groupPurchaseId 团购ID
     * @return 是否可参与
     */
    public boolean isGroupPurchaseAvailable(Integer groupPurchaseId);

    /**
     * 获取团购参与人数
     * 
     * @param groupPurchaseId 团购ID
     * @return 参与人数
     */
    public int getGroupPurchaseParticipantCount(Integer groupPurchaseId);
}
